en mi sitio, cuando se elimina una sección, quiero que se eliminen todos los elementos de esa sección, por lo que estoy usando una transacción
const sectionRef = db .collection('items') .where('subSection', '==', sectionName); db.runTransaction((transaction) => { return transaction .get(sectionRef) .then((data) => { data.docs.map((doc) => { transaction.delete(doc); }); }) .catch((e) => { console.log('transaction failed', e); }); }); };Estoy teniendo el siguiente error
(FirebaseError): el tipo no coincide con la instancia esperada. ¿Pasaste una referencia de un SDK de Firestore diferente?
aquí está la configuración de base de fuego
firebaseConfig = { apiKey: process.env.REACT_APP_PROD_API_KEY, authDomain: process.env.REACT_APP_PROD_AUTH_DOMAIN, projectId: process.env.REACT_APP_PROD_PROJECT_ID, storageBucket: process.env.REACT_APP_PROD_STORAGE_BUCKET, messagingSenderId: process.env.REACT_APP_PROD_MESSAGING_SENDER_ID, appId: process.env.REACT_APP_PROD_APP_ID, measurementId: process.env.REACT_APP_PROD_MEASUREMENT_ID, }; const firebaseApp = firebase.initializeApp(firebaseConfig); const db = firebaseApp.firestore();¿alguien puede ver el problema?
Con JS SDK (y los otros SDK de cliente: iOS, Android, C++) no puede obtener los documentos de una colección (o de una consulta) en una Transacción .
Como verá en el documento, debe pasar una DocumentReference al método get() (de una Transacción).
Puede llamar a este método get() varias veces en la transacción, pero no puede pasarle una CollectionReference .
Por otro lado, esto es posible a través de los SDK de administración (es decir, las bibliotecas del servidor ). Por ejemplo, con el de Node.js, consulte el documento para el método get() .
Puede obtener más detalles sobre la diferencia entre estos SDK y sus motivos en este elemento de documentación .
Por lo tanto, dado que utiliza una consulta, significa que ahora no indica por adelantado (es decir, al codificar) la lista de documentos para leer en la Transacción. Por lo tanto, debe usar Admin SDK, por ejemplo, en una función de nube.